// 7-5 判断可逆素数 (10分)
// 若将某一素数的各位数字的顺序颠倒后得到的数仍是素数，则此素数称为可逆素数。

// 现编写程序，输入一个正整数，判断该数是否是可逆素数。如果是可逆素数，输出YES，否则输出NO。

// 输入格式:
// 输入一个正整数N（0<N≤10000）。

// 输出格式:
// 输出YES或NO。（注意是大写字母）
#include <stdio.h>
#include <math.h>
#define Y "YES"
#define N "NO"

int isPrime(int n);
int reverseNum(int n);
int main()
{
    int n;
    scanf("%d", &n);
    if (isPrime(n) && isPrime(reverseNum(n)))
    {
        printf(Y);
    }
    else
    {
        printf(N);
    }
    
    return 0;
}

int isPrime(int n)
{
    if (n > 3)
    {
        for (int i = 2; i < sqrt(n) + 1; ++i)
        {
            if (n % i == 0)
            {
                return 0;
            }
        }
    }
    else if (n == 1)  // 1不是素数
    {
        return 0;
    }
    return 1;
}

int reverseNum(int n)
{
    int ret = 0;
    while(n)
    {
        ret = ret * 10 + n % 10;
        n /= 10;
    }
    return ret;
}
// 输入样例1:
// 23
// 输出样例1:
// NO
// 输入样例2:
// 17
// 输出样例2:
// YES